#框架模式
#apiobject模式
#将每一个接口当做单独的对象进行管理，在测试用例层根据用例流程调用不同的接口对象实现测试
#纯数据驱动模式
#指的是我们将多有的测试数据存储在一种存储介质中（cdv/yaml/excel/db),那么业务测试人员无需懂代码，只需要在储存介质上按照一定的规则填写测试数据可完成自动化用例的编写

#创建项目结构
#common :这个是一个包，用来存放我们的公共底层代码，比如requests的封装，日志封装、文件处理、加解密处理，数据随机生成，复杂的json处理，redis封装，数据库封装等等
#config:这是一个目录，主要用来存放相关配置文件，比如redis,db，公共信息，环境信息
#dara:这是个目录，主要用来存放测试数据文件
#logs:这是个目录，主要用来存放收集到的日志文件
#report：这是一个目录，主要用来存放测试结果数据及测试报告
#api：这是一个包，主要存放自定义封装的接口
#testcases:这是一个包，主要存放测试用例脚本
#conftest.py：这个主要是pytest的一个核心文件，名称是固定的，主要用来重写pytest自带的一些钩子函数，以及统一定义和管理自定义fixture
#pytest.ini:这是pytest的配置文件，配置pytest指定的一些参数及规则，例如识别用例的规则，管理测试用例
#run.py:这个框架的执行入口

#数据准备和清除
#数据准备
 #直接初始化数据库数据（适合小项目）
   #我把所有的接口需要的数据，在一个空的数据库上全部构造完成，并将这个数据库数据进行备份
   #在每次执行自动化前先悲愤当前环境的数据库，然后把之前备好的自动化数据库初始化到当前环境的库中
   #在执行完自动化后，再把原来的还原回去

 #在自动化执行前通过sql语句造数据
   #比如你需要一个产品id,那么我使用sql在数据库中插入一个数据
   #这种手段的弊端在于项目如果复杂，那么一个数据可能涉及多个表，在构造时要非常熟悉数据库的结构以及数据表之间的依赖

 #可以采用调用接口的方式去构造数据
  #先通过接口创建数据，用完再删除数据

#清除数据
 #数据清除是指执行完自动化后，将自动化所产生的数据进行清除，清除的主要目的在于自动化可能造成垃圾数据
 #清除方式：调用sql,调用接口


#比较常见的加密方式
 #md5:不可逆的加密算法，只能加密不能解密，在我们这个项目哥哥登录接口的密码都是经过md5加密的
 #aes:是一种堆成加解密算法，堆成的意思就是加密和解密用到的要是是一样的，在aes这个要是通常叫做私钥，注意实际工作中，私钥是由开发提供的
 #rsa;是一种非堆成加解密算法，飞堆成的意思就是加密和解密用到的要是不一样的，在rsa有两种要是，分别叫公钥和私钥，注意在工作中都是又开发提供的